Pandas套件的Pivot Table樞紐分析表可以說是進行資料統計分析時非常好用的工具之一,可以快速解讀欄位資料之間的關係。
pd.pivot_table(data資料, index=列欄位, columns=行欄位, values=分析欄位, margins=布林值, margins_name=字串, aggfunc=統計項目, fill_value=填補空值, dropna=布林值)
匯入資料
A、B、C三種類型電影的電影名稱、年份、分數等資料。
from pandas.core.groupby import groupby
import pandas as pd
movie = pd.DataFrame([
['A電影', 2020, 54],
['B電影', 2020, 90],
['C電影', 2020, 58],
['A電影', 2021, 53],
['B電影', 2021, 66],
['C電影', 2021, 82],
['A電影', 2022, 85],
['B電影', 2022, 75],
['C電影', 2022, 56],
], columns=['電影名稱', '年份', '分數'])
print(movie)
執行結果:
電影名稱 年份 分數
0 A電影 2020 54
1 B電影 2020 90
2 C電影 2020 58
3 A電影 2021 53
4 B電影 2021 66
5 C電影 2021 82
6 A電影 2022 85
7 B電影 2022 75
8 C電影 2022 56
使用values選出想分析的欄位數值
MF = movie.pivot_table(values='分數', index='年份')
print(MF)
執行結果:
分數
年份
2020 67.333333
2021 67.000000
2022 72.000000
增加想分析欄位名稱
MF2 = movie.pivot_table(values='分數', index='年份', columns='電影名稱')
print(MF2)
執行結果:
電影名稱 A電影 B電影 C電影
年份
2020 54 90 58
2021 53 66 82
2022 85 75 56
margins設定為為True,可計算每列與每欄資料的「平均小計」及「平均總計」
MF3 = movie.pivot_table(values='分數', index='年份', columns='電影名稱', margins=True, margins_name='總平均')
print(MF3)
執行結果:
電影名稱 A電影 B電影 C電影 總平均
年份
2020 54 90 58.000000 67.333333
2021 53 66 82.000000 67.000000
2022 85 75 56.000000 72.000000
總平均 64 77 65.333333 68.777778
使用aggfunc設定想要的統計項目
MF4 = movie.pivot_table(values='分數', index='年份', columns='電影名稱', aggfunc=['max','min','sum'])
print(MF4)
執行結果:
max min sum
電影名稱 A電影 B電影 C電影 A電影 B電影 C電影 A電影 B電影 C電影
年份
2020 54 90 58 54 90 58 54 90 58
2021 53 66 82 53 66 82 53 66 82
2022 85 75 56 85 75 56 85 75 56
則資料將以想要的主要欄位名稱,不同的統計項目分別展開列示。